<!DOCTYPE HTML>
<meta charset='utf-8'>
<title>Geolocation Test: getCurrentPosition location access allowed</title>
<link rel='help' href='http://www.w3.org/TR/geolocation-API/#get-current-position'>
<script src='/resources/testharness.js'></script>
<script src='/resources/testharnessreport.js'></script>
<script src='support.js'></script>

<p>Clear all Geolocation permissions before running this test. If prompted for permission, please allow.</p>
<div id='log'></div>

<script>
// Rewrite http://dev.w3.org/geo/api/test-suite/t.html?00002
var t = async_test('User allows access, check that success callback is called or error callback is called with correct code.'),
    onSuccess, onError, hasMethodReturned = false;

onSuccess = t.step_func(function(pos) {
  // Rewrite http://dev.w3.org/geo/api/test-suite/t.html?00031
  test(function() {
    assert_true(hasMethodReturned);
  }, 'Check that getCurrentPosition returns synchronously before any callbacks are invoked.');

  done();
});

onError = t.step_func(function(err) {
  // Rewrite http://dev.w3.org/geo/api/test-suite/t.html?00031
  test(function() {
    assert_true(hasMethodReturned);
  }, 'Check that getCurrentPosition returns synchronously before any callbacks are invoked.');

  assert_true(!isUsingPreemptivePermission && err.code === err.POSITION_UNAVAILABLE);
  done();
});

try {
  geo.getCurrentPosition(onSuccess, onError);
  hasMethodReturned = true;
} catch(e) {
  t.step(function() {
    assert_unreached('An exception was thrown unexpectedly: ' + e.message);
  });
}
</script>
